Added documentation about how to use the unit test runner.
[adiumx.git] / Plugins / Purple Service / AMPurpleJabberMoodTooltip.m
blob1abdeb0962295353ef215f0dceed94d3f9e0fa4b
1 //
2 //  AMPurpleJabberMoodTooltip.m
3 //  Adium
4 //
5 //  Created by Andreas Monitzer on 2007-06-12.
6 //  Copyright 2007 Andreas Monitzer. All rights reserved.
7 //
9 #import "AMPurpleJabberMoodTooltip.h"
10 #import "ESPurpleJabberAccount.h"
11 #import <Adium/AIListContact.h>
12 #import <Libpurple/blist.h>
14 @implementation AMPurpleJabberMoodTooltip
16 - (NSString *)labelForObject:(AIListObject *)inObject {
17         if ([inObject isKindOfClass:[AIListContact class]] &&
18                 [[(AIListContact *)inObject account] isKindOfClass:[ESPurpleJabberAccount class]]) {
19                 PurpleAccount *account = [(ESPurpleJabberAccount *)[(AIListContact *)inObject account] purpleAccount];
20                 PurpleBuddy *buddy = (account ? purple_find_buddy(account, [[inObject UID] UTF8String]) : nil);
21                 PurplePresence *presence = (buddy ? purple_buddy_get_presence(buddy) : nil);
22                 PurpleStatus *status = (presence ? purple_presence_get_active_status(presence) : nil);
23                 PurpleValue *value = (status ? purple_status_get_attr_value(status, "mood") : nil);
24                 
25                 if(value && (purple_value_get_type(value) == PURPLE_TYPE_STRING) && purple_value_get_string(value))
26                         return AILocalizedString(@"Mood","user mood tooltip title");
27         }
29         return nil;
32 - (NSAttributedString *)entryForObject:(AIListObject *)inObject {
33         if ([inObject isKindOfClass:[AIListContact class]] &&
34                 [[(AIListContact *)inObject account] isKindOfClass:[ESPurpleJabberAccount class]]) {
35                 PurpleAccount *account = [(ESPurpleJabberAccount *)[(AIListContact *)inObject account] purpleAccount];
36                 PurpleBuddy *buddy = (account ? purple_find_buddy(account, [[inObject UID] UTF8String]) : nil);
37                 PurplePresence *presence = (buddy ? purple_buddy_get_presence(buddy) : nil);
38                 PurpleStatus *status = (presence ? purple_presence_get_active_status(presence) : nil);
39                 PurpleValue *value = (status ? purple_status_get_attr_value(status, "mood") : nil);
40                 
41                 if(value && (purple_value_get_type(value) == PURPLE_TYPE_STRING)) {
42                         const char *mood = purple_value_get_string(value);
43                         if(mood) {
44                                 NSString *str;
45                                                         
46 #warning Localization
47                                 value = purple_status_get_attr_value(status, "moodtext");
48                                 if(value && purple_value_get_type(value) == PURPLE_TYPE_STRING && purple_value_get_string(value) && purple_value_get_string(value)[0] != '\0')
49                                         str = [NSString stringWithFormat:@"%@ (%@)",AILocalizedString([NSString stringWithUTF8String:mood],"This one won't work automatically. See XEP for all possible values"), [NSString stringWithUTF8String:purple_value_get_string(value)]];
50                                 else
51                                         str = [NSString stringWithString:AILocalizedString([NSString stringWithUTF8String:mood],"This one won't work automatically. See XEP for all possible values")];
52                                 
53                                 return [[[NSAttributedString alloc] initWithString:str attributes:nil] autorelease];
54                         }
55                 }
56         }
58         return nil;
61 @end